package com.firewolf.mybatis;

import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.ibatis.session.SqlSession;
import org.junit.Before;
import org.junit.Test;

/**
 * @Description: 测试类
 * @Author: 刘兴
 * @Date : 2016年8月17日
 * @package : com.firewolf.mybatis.curd.drivers
 * @Java_Version : 1.7
 * @Version : 2016年8月17日下午12:53:58
 */
public class UserDriver {
	
	private SqlSession session = null;
	
	@Before
	public void init() throws IOException{
		session = MyBatisUtil.getSession("xmlConf.xml");
	}


	/**
	 * @Description: 新增
	 * @输入和输出示例：
	 * @思路：
	 * @throws IOException
	 */
	@Test
	public void testAdd(){
		String insertSql = "userMapper.addUser";
		User user = new User();
		user.setName("zhangyao");
		user.setAge(27);
		int insert = session.insert(insertSql, user);
		//默认情况下SqlSessionFactory。openSession()方法获取到的session是不会自动提交的
		//所以需要手动调用commit方法，也可以通过在方法中加入true方法来让其自动提交
		session.commit();
		System.out.println(insert);
	}
	
	/***
	 * @Description: 删除对象
	 * @输入和输出示例：
	 * @思路：
	 */
	@Test
	public void testDelete() {
		String delSql = "userMapper.delUser";
		int delete = session.delete(delSql, 1);
		session.commit();
		System.out.println(delete);
	}
	
	/**
	 * @Description: 修改用户
	 * @输入和输出示例：
	 * @思路：
	 */
	@Test
	public void testUpdate(){
		String updateSql = "userMapper.updateUser";
		User user = new User();
		user.setName("zhangyao444");
		user.setAge(29);
		user.setId(5);
		int update = session.update(updateSql, user);
		session.commit();
		System.out.println(update);
	}
	
	/**
	 * @Description: 查询所有用户
	 * @输入和输出示例：
	 * @思路：
	 */
	@Test
	public void testQryAll(){
		String qryAllStrl = "userMapper.qryAll";
		List<User> users = session.selectList(qryAllStrl);
		System.out.println(users);
	}
	
	/**
	 * @Description: 多个条件使用Map
	 * @输入和输出示例：
	 * @思路：
	 */
	@Test
	public void testByCondition(){
		String qryAllStrl = "userMapper.qryByCondition";
		//传入参数的Map
		Map<String, Object> paramMap = new HashMap<>();
		paramMap.put("id", 1);
		paramMap.put("age", 12);
		List<User> users = session.selectList(qryAllStrl,paramMap);
		System.out.println(users);
	}
	
	/**
	 * @Description: 通用SQL
	 * @输入和输出示例：
	 * @思路：
	 */
	@Test
	public void commonSQL(){
		String selectOne = "userMapper.qryById";
		//传入参数的Map
		User u = session.selectOne(selectOne, 1);
		System.out.println(u);
	}
	
}
